#ifndef _SBUS_H_
#define _SBUS_H_

#include "main.h"

/**
 * SBUS_ERROR_CODE_TypeDef 枚举定义了SBUS通信过程中可能遇到的错误代码。
 * 这些错误代码用于标识通信过程中遇到的具体问题，方便进行错误处理和调试。
 */
typedef enum
{
  SBUS_SUCCESS = 0,  // 操作成功
  SBUS_INVALID_PARAM = 1,  // 参数错误，例如传入的参数值不符合要求
  SBUS_DATA_LENGTH_ERROR = 2,  // 数据长度不足，不足以完成操作
  SBUS_STARTBYTE_ERROR = 3,  // 起始字节不正确，可能是因为数据帧的起始标识符错误
  SBUS_ENDBYTE_ERROR = 4  // 结束字节不正确，可能是因为数据帧的结束标识符错误
}SBUS_ERROR_CODE_TypeDef;

/**
 * @struct SBUS_DATA
 * 定义了SBUS数据的结构体，用于存储通过SBUS协议接收的遥感数据。
 */
struct SBUS_DATA
{
  uint8_t startbyte; /**< 起始字节，用于标识SBUS数据的开始。 */
  int16_t CH[16]; /**< 通道数据数组，存储来自遥控器的16个通道的值。 */
  uint8_t flags; /**< 标志位，提供关于接收数据的状态信息，如翻转等。 */
  uint8_t endbyte; /**< 结束字节，用于标识SBUS数据的结束。 */
};

SBUS_ERROR_CODE_TypeDef SBUS_decode(uint8_t *raw, struct SBUS_DATA* data,uint8_t len);

#endif
